<?php
/**
 * Application model for Cake.
 *
 * This file is application-wide model file. You can put all
 * application-wide model-related methods here.
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Model
 * @since         CakePHP(tm) v 0.2.9
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */

App::uses('Model', 'Model');

/**
 * Application model for Cake.
 *
 * Add your application-wide methods in the class below, your models
 * will inherit them.
 *
 * @package       app.Model
 */
class AppModel extends Model {
	/**
	 * Unbind all model
	 * @param unknown_type $reset same as $reset in unbindModel function
	 * 
	 * @author thientd
	 */
	function unbindAllModel($reset = true) {
		
		$params = array();
		
		$associations = $this->associations();
		
		foreach ($associations as $association) {
			if (isset($this->{$association}) && $this->{$association}) {
				$params[$association] = array();
				foreach ($this->{$association} as $modelName => $value) {
					$params[$association][] = $modelName;
				}
			}
		}
		
		return $this->unbindModel($params, $reset);
	}
	
	/**
	 * Sửa hàm update all của cake
	 * (non-PHPdoc) 
	 * @see Model::updateAll()
	 * @author thientd
	 */
	function updateAll($fields, $conditions = true) {
		$this->unbindAllModel();
		$result = parent::updateAll($fields, $conditions);
		$this->resetAssociations();
		return $result;		
	}
	
	/**
	 * Hàm thay thế cho hàm update all của Cake 
	 * @param unknown_type $fields
	 * @param unknown_type $conditions
	 * @author thientd
	 */
	function updateAllUnbind($fields, $conditions = true) {
		$this->unbindAllModel();
		$return = parent::updateAll($fields, $conditions);
		$this->resetAssociations();
		return $return;
	}
}
